home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / adb.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  3KB  |  105 lines

  1. /*
  2.  * Definitions for ADB (Apple Desktop Bus) support.
  3.  */
  4. #ifndef __ADB_H
  5. #define __ADB_H
  6.  
  7. /* ADB commands */
  8. #define ADB_BUSRESET        0
  9. #define ADB_FLUSH(id)        (0x01 | ((id) << 4))
  10. #define ADB_WRITEREG(id, reg)    (0x08 | (reg) | ((id) << 4))
  11. #define ADB_READREG(id, reg)    (0x0C | (reg) | ((id) << 4))
  12.  
  13. /* ADB default device IDs (upper 4 bits of ADB command byte) */
  14. #define ADB_DONGLE    1    /* "software execution control" devices */
  15. #define ADB_KEYBOARD    2
  16. #define ADB_MOUSE    3
  17. #define ADB_TABLET    4
  18. #define ADB_MODEM    5
  19. #define ADB_MISC    7    /* maybe a monitor */
  20.  
  21. #define ADB_RET_OK    0
  22. #define ADB_RET_TIMEOUT    3
  23.  
  24. /* The kind of ADB request. The controller may emulate some
  25.    or all of those CUDA/PMU packet kinds */
  26. #define ADB_PACKET    0
  27. #define CUDA_PACKET    1
  28. #define ERROR_PACKET    2
  29. #define TIMER_PACKET    3
  30. #define POWER_PACKET    4
  31. #define MACIIC_PACKET    5
  32. #define PMU_PACKET    6
  33. #define ADB_QUERY    7
  34.  
  35. /* ADB queries */
  36.  
  37. /* ADB_QUERY_GETDEVINFO
  38.  * Query ADB slot for device presence
  39.  * data[2] = id, rep[0] = orig addr, rep[1] = handler_id
  40.  */
  41. #define ADB_QUERY_GETDEVINFO    1
  42.  
  43. #ifdef __KERNEL__
  44.  
  45. struct adb_request {
  46.     unsigned char data[32];
  47.     int nbytes;
  48.     unsigned char reply[32];
  49.     int reply_len;
  50.     unsigned char reply_expected;
  51.     unsigned char sent;
  52.     unsigned char complete;
  53.     void (*done)(struct adb_request *);
  54.     void *arg;
  55.     struct adb_request *next;
  56. };
  57.  
  58. struct adb_ids {
  59.     int nids;
  60.     unsigned char id[16];
  61. };
  62.  
  63. /* Structure which encapsulates a low-level ADB driver */
  64.  
  65. struct adb_driver {
  66.     char name[16];
  67.     int (*probe)(void);
  68.     int (*init)(void);
  69.     int (*send_request)(struct adb_request *req, int sync);
  70.     int (*autopoll)(int devs);
  71.     void (*poll)(void);
  72.     int (*reset_bus)(void);
  73. };
  74.  
  75. /* Values for adb_request flags */
  76. #define ADBREQ_REPLY    1    /* expect reply */
  77. #define ADBREQ_SYNC    2    /* poll until done */
  78. #define ADBREQ_NOSEND    4    /* build the request, but don't send it */
  79.  
  80. /* Messages sent thru the client_list notifier. You should NOT stop
  81.    the operation, at least not with this version */
  82. enum adb_message {
  83.     ADB_MSG_POWERDOWN,    /* Currently called before sleep only */
  84.     ADB_MSG_PRE_RESET,    /* Called before resetting the bus */
  85.     ADB_MSG_POST_RESET    /* Called after resetting the bus (re-do init & register) */
  86. };
  87. extern struct adb_driver *adb_controller;
  88. extern struct notifier_block *adb_client_list;
  89.  
  90. int adb_request(struct adb_request *req, void (*done)(struct adb_request *),
  91.         int flags, int nbytes, ...);
  92. int adb_register(int default_id,int handler_id,struct adb_ids *ids,
  93.          void (*handler)(unsigned char *, int, struct pt_regs *, int));
  94. int adb_unregister(int index);
  95. void adb_poll(void);
  96. void adb_input(unsigned char *, int, struct pt_regs *, int);
  97. int adb_reset_bus(void);
  98.  
  99. int adb_try_handler_change(int address, int new_id);
  100. int adb_get_infos(int address, int *original_address, int *handler_id);
  101.  
  102. #endif /* __KERNEL__ */
  103.  
  104. #endif /* __ADB_H */
  105.